import StringTool from '@/utils/StringUtil'
/**
 * author : xuzongmeng
 * date   : 2018/9/29
 * desc   : form表单校验规则
 */
class FormRulePrototypeConfig {
  static createPrototype (vue) {
    let defaultLocation = {
      lat: 31.230256,
      lng: 121.473735,
      hasLocation: false // 是否已经定位
    }
    vue.prototype.defaultLocation = defaultLocation
    vue.prototype.checkLocation = (rule, value, callback) => {
      // console.log('checkLocation=' + JSON.stringify(value))
      if (!value) {
        return callback(new Error('未标记地点'))
      } else if (value.lat === 0 || value.lng === 0 || value.lat === defaultLocation.lat || value.lng === defaultLocation.lng) {
        return callback(new Error('未标记地点'))
      } else {
        callback()
      }
    }
    vue.prototype.checkRoomNumber = (rule, value, callback) => {
      if (value) {
        if (!Number.isInteger(Number(value)) || Number(value) <= 0) {
          return callback(new Error('请检查输入格式，不能为空，为正整数'))
        } else if (Number(value) > 10) {
          return callback(new Error('最大容量不能超过10'))
        } else {
          callback()
        }
      }
    }
    vue.prototype.checkNumber = (rule, value, callback) => {
      // console.log('==checkNumber===' + value)
      if (!value || value === 0) {
        return callback(new Error('请检查输入格式，不能为空，为正整数'))
      }
      if (value) {
        if (!Number.isInteger(Number(value)) || Number(value) <= 0) {
          return callback(new Error('请检查输入格式，不能为空，为正整数'))
        } else {
          callback()
        }
      }
    }

    vue.prototype.checkList = (rule, value, callback) => {
      // console.log('checkList=' + value)
      if (StringTool.isEmpty(value)) {
        return callback(new Error('未选择'))
      } else if (value.length <= 0) {
        return callback(new Error('未选择'))
      } else {
        callback()
      }
    }
    vue.prototype.checkRate = (rule, value, callback) => {
      // console.log('checkRate=' + value)
      if (value === 0) {
        return callback(new Error('未选择'))
      } else {
        callback()
      }
    }
    vue.prototype.checkSelect = (rule, value, callback) => {
      console.log('checkSelect=' + value)
      if (StringTool.isEmpty(value)) {
        return callback(new Error('未选择'))
      } else if (value.length <= 0) {
        return callback(new Error('未选择'))
      } else {
        callback()
      }
    }
    vue.prototype.checkText = (rule, value, callback) => {
      if (StringTool.isEmpty(value)) {
        return callback(new Error('不能为空'))
      } else {
        callback()
      }
    }
    vue.prototype.checkImageList = (rule, value, callback) => {
      // console.log('checkImageList=' + value)
      if (StringTool.isEmpty(value)) {
        return callback(new Error('未上传图片'))
      } else if (value.length <= 0) {
        return callback(new Error('未上传图片'))
      } else {
        callback()
      }
    }
    vue.prototype.checkImage = (rule, value, callback) => {
      console.log('==checkImage===' + value)
      if (!value) {
        return callback(new Error('未上传图片'))
      } else {
        callback()
      }
    }
    vue.prototype.checkFile = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('未上传文件'))
      } else {
        callback()
      }
    }
    vue.prototype.checkTime = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('请选择时间'))
      } else {
        callback()
      }
    }
    vue.prototype.checkDecimal = (rule, value, callback) => {
      // console.log('==checkDecimal===' + value)
      if (!value || value === 0) {
        return callback(new Error('请检查输入格式，不能为空，最多两位小数'))
      }
      if (value) {
        let rgx = /^\d+(\.\d{1,2})?$/
        // console.log('==checkDecimal==rgx=' + rgx)
        if (!rgx.test(value)) {
          return callback(new Error('请检查输入格式，不能为空，最多两位小数'))
        } else {
          callback()
        }
      }
    }
    vue.prototype.checkSmallDecimal = (rule, value, callback) => {
      // console.log('==checkDecimal===' + value)
      if (!value || value === 0) {
        return callback(new Error('请检查输入格式，不能为空，最多两位小数'))
      }
      if (value > 1 || value < 0) {
        return callback(new Error('数值不能大于1'))
      }
      if (value) {
        let rgx = /^\d+(\.\d{1,2})?$/
        // console.log('==checkDecimal==rgx=' + rgx)
        if (!rgx.test(value)) {
          return callback(new Error('请检查输入格式，不能为空，最多两位小数'))
        } else {
          callback()
        }
      }
    }
  }
}
export default FormRulePrototypeConfig
